package edu.uclm.esi.iso5.tresenraya.dominio;

import java.util.Hashtable;

import edu.uclm.esi.iso5.tresenraya.dominio.exception.CoordenadasNoValidasException;
import edu.uclm.esi.iso5.tresenraya.dominio.exception.JugadorNoExisteException;
import edu.uclm.esi.iso5.tresenraya.dominio.exception.NoEstaJugandoException;
import edu.uclm.esi.iso5.tresenraya.dominio.exception.NoTienesElTurnoException;

public class FTERD {
	
	private Hashtable<String, Jugador> jugadores;
	private Hashtable<String, Tablero9x9> tableros;
	
	public FTERD() {
		this.jugadores=new Hashtable<String, Jugador>();
		this.tableros=new Hashtable<String, Tablero9x9>();
	}
	
	public void add(Jugador j) {
		if(jugadores==null) {
			this.jugadores=new Hashtable<String, Jugador>();
		}
		this.jugadores.put(j.getEmail(), j);
	}
	
	public void poner(String email, int cT, int fT, int cC, int fC) throws NoTienesElTurnoException, JugadorNoExisteException, NoEstaJugandoException, CoordenadasNoValidasException {
		Jugador j=this.jugadores.get(email);
		if(j==null) {
			throw new JugadorNoExisteException(email);
		}
		j.poner(cT, fT, cC, fC);
	}

	public void solicitudDeJugador(Jugador jugador) {
		Tablero9x9 tablero=new Tablero9x9();
		tablero.setJugadorConElTurno(jugador);
		this.tableros.put(jugador.getEmail(), tablero);
	}

	public void unirAPartida(Jugador oponente, Jugador creador) {
		Tablero9x9 tablero=this.tableros.get(creador.getEmail());
		tablero.setJugadorA(creador);
		tablero.setJugadorB(oponente);
		creador.setTablero(tablero);
		oponente.setTablero(tablero);
	}

	public Hashtable<String, Jugador> getJugadores() {
		return jugadores;
	}
	
	public void setTableros(Hashtable<String, Tablero9x9> tableros) {
		this.tableros=tableros;
	}

	public Hashtable<String, Tablero9x9> getTableros() {
		return tableros;
	}
	
	public void setJugadores(Hashtable<String, Jugador> jugadores) {
		this.jugadores=jugadores;
	}
}
